{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "RCNnQ2hQVtPH"
   },
   "source": [
    "A popular example for image classification is the MNIST dataset, which contains digits from 0 to 9 in different styles. Here we'll use a drop-in replacement, called the fashion-mnist, consisting of different pieces of clothing. We can get the dataset directly via a keras utility function.\n",
    "\n",
    "Fashion-MNIST is a dataset of Zalando's article images consisting of a training set of 60,000 examples and a test set of 10,000 examples (https://github.com/zalandoresearch/fashion-mnist)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "eePjDO5mVtPI"
   },
   "outputs": [],
   "source": [
    "from tensorflow import keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "qdP3Bo7TVtPL"
   },
   "outputs": [],
   "source": [
    "(train_images, train_labels), (test_images, test_labels) = keras.datasets.fashion_mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "t-S8VuHjVtPP"
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "QuJltiNBVtPS"
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "mwP3RdMNVtPV"
   },
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4zvfpTl2VtPX"
   },
   "outputs": [],
   "source": [
    "class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',\n",
    "               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "JUdk-PrgVtPa",
    "outputId": "3cb548b1-fd65-469f-e821-a32f95e0879f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 11,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "gBUv7cwlVtPe",
    "outputId": "97d3970a-61a1-4513-e255-0d7c79939034"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 28, 28)"
      ]
     },
     "execution_count": 8,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 265
    },
    "colab_type": "code",
    "id": "WKTQaTXfVtPh",
    "outputId": "f19a0449-a908-4883-b522-91336e615292"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0])\n",
    "plt.colorbar()\n",
    "plt.grid(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "WsmDP9gCVtPp"
   },
   "outputs": [],
   "source": [
    "train_images = train_images / 255.0\n",
    "test_images = test_images / 255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 269
    },
    "colab_type": "code",
    "id": "HmQP9eEHVtPs",
    "outputId": "0aca1612-e828-4dc8-ef1f-98953139ceab"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0])\n",
    "plt.colorbar()\n",
    "plt.grid(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 589
    },
    "colab_type": "code",
    "id": "N5FQKbpgVtPw",
    "outputId": "d503d526-f47f-4346-cbbc-87ea9153947a",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAI8CAYAAAAazRqkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydebxd0/n/P0tQEYSMMroSMTRE5hiCmIUoalZTfUv9Wi0dDNXSUq2qKlVTSxU1FkkNRYJIhEhlEBmEyEhEElcSEVKK/fvjnrvyWU/OXtn35p57z73783698sqzz1pnnX32WmuffZ/RJUkCIYQQQoimzkYNfQJCCCGEEPWBHnqEEEIIkQv00COEEEKIXKCHHiGEEELkAj30CCGEECIX6KFHCCGEELlg45p0btOmTVJRUVGiUxHFWLBgASorK11dj1suc/nf//7Xy++8846Xt9lmm6Df5ptv7mXnXFHZjrdixQovf+1rXwv6bbvttl5u1qxZTU+71kyePLkySZK2dT1uQ83nF198ERxXVlZ6uXXr1l7eZJNNNvizPv30Uy/zPAPherFrolQ0hb352WefeXn16tVB28qVK73Me4TnFQj3Ztr+A4CPP/7YyxtttPbv7VatWgX92rat8+2RiVLszXK5z5aS//3vf16ui31eF8TmskYPPRUVFZg0aVLdnJXIRP/+/Usybl3MJed4qu0PzaxZs7x83nnnefmEE04I+vXp08fLm266qZc33jhcwjNnzvTyiBEjvNytW7eg30UXXeTlrbfeuqanXWuccwtLMW5D7c1ly5YFx3fddZeXTz/9dC/zQ2ZtmTp1qpfffPPNoO3YY4/1cn3deMt5b2Zl/vz5Xh47dmzQ9thjj3mZH0xOO+20oF/fvn29zPPy6KOPBv2ee+45L7do0cLLp556atDvnHPOyXTudU0p9mYefjMXL17s5Y4dOzbgmawlNpcybwkhhBAiF9RI0yPyR0ybk6bdee2114Ljhx56yMv2rz9Wm7N6/dJLLw36LV++POMZr2XHHXf08uuvvx60XX311V5mLcShhx4a9PvJT37i5d12263G59AU4Xl6/PHHg7Z77rnHyw8++KCXrcmCtXWsmbEmFja/vPvuu14++uijg368jo4//vj4F8gZTz/9tJevv/76oK158+Ze/vzzz4O2zTbb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SAA/qP4j1DnXp/D/OuvDVUUBfVowm1yLqgcgsYFob2ajoR96TgYwwrz2KEITV4zzATR3zv2eX0ySZBSq1GuvOOemA3gExR9KPgEw0FWF8B0A4MrC62egyiY9DVU+Qet7/S5U2SflyJyNEwDMKKjCd0WVr1RtuQuFa4+qv2qeo7YnAFT/9bMPgB8A+HZh/k5D1fqp5h0Ar6JKZXtukiT/3YBzyhOay6ZL88L1nomquRgFIC0o5NcANgEwrdD/14XXi62P3QC8WnjtlwCuKuF3yDPam0VQGQrRZHDO3QHgjiRJJtTwfXcBeLLglC7KALlFSkYAACAASURBVM2lEOVJY9+b5ZKnR4gNJkmS7zT0OYi6QXMpRHnS2PemND1CCCGEyAUN7dMjhBBCCFEv6KFHCCGEELlADz1CCCGEyAV66BFCCCFELqhR9FabNm2SioqKEp1KOl98ERbwXbVqlZcrKyu93KxZs6DfZputLeux0UZrn+/seJ98sjbxZIsWLbzcqVOnoB+PUV8sWLAAlZWVxbJObxANNZd5Z/LkyZVJkrSt63HLcT4//vhjL3/ta18L2jbddNNMY3z22drksZ9++qmXt9lmmw08uw1He7NpUYq9qblsGGJzWaOHnoqKCkyaNKlGH26jw4pXjYizbNmy4Hj06NFevv32tbVGt95666DfLrvs4mW+6a5YsSLo98orr3h5jz328PJvf/vboF/z5tnyDvJ3rs33Zfr3779B70+jNnMpNhzn3MJSjFsX85kWyVnbNTx27Fgvd+/ePWjr3LlzpjHmz5/vZf5+xx9/fK3OqS7R3mxalGJvai4bhthcliRPT9YffdbS/OlPfwranntubcLH//43TNrI2pjPP//cyxMnTgz6DR8+vOjnbrLJJsExa3T+85//eHmvvfYK+rVq1crL++23n5d/8IMfBP3K4a9QIWoK79uYVnPRokVevvPOO4O26667zsuska0L+JxOO+20oO2aa67x8vnnn48sfPXVV6njCyGaJtrlQgghhMgFeugRQgghRC7QQ48QQgghckG9196aO3eul4cNG+blbbfdNujHTsnWB4ejtNhB2ToWrl69er3vAUK/oA8++MDLNsqLI0meffZZL7/88stBv+9+97te/uY3vwkhypGsPi19+vQJjt9++20v854AgM0339zLvKetXx77vfFef//994N+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\n",
      "text/plain": [
       "<Figure size 720x720 with 25 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 10))\n",
    "for i in range(25):\n",
    "    plt.subplot(5, 5, i+1)\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.grid(False)\n",
    "    plt.imshow(train_images[i], cmap=plt.cm.binary)\n",
    "    plt.xlabel(class_names[train_labels[i]])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 275
    },
    "colab_type": "code",
    "id": "DXUV4N58VtP1",
    "outputId": "d29c1ac8-addd-49f8-9b8a-e33d1cf77086"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: scikit-image in /usr/local/lib/python3.6/dist-packages (0.16.2)\n",
      "Requirement already satisfied: PyWavelets>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.1.1)\n",
      "Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4.1)\n",
      "Requirement already satisfied: pillow>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (7.0.0)\n",
      "Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.4.1)\n",
      "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4)\n",
      "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (3.2.2)\n",
      "Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.6/dist-packages (from PyWavelets>=0.4.0->scikit-image) (1.18.5)\n",
      "Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from networkx>=2.0->scikit-image) (4.4.2)\n",
      "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.8.1)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.2.0)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.4.7)\n",
      "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (0.10.0)\n",
      "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.1->matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.12.0)\n"
     ]
    }
   ],
   "source": [
    "pip install scikit-image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "DxRfB42FVtP3"
   },
   "outputs": [],
   "source": [
    "import skimage.transform\n",
    "\n",
    "def get_pyramid_features(img):\n",
    "    return np.hstack([\n",
    "        layer.reshape(-1)\n",
    "        for layer in skimage.transform.pyramids.pyramid_gaussian(img)\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "qdIjuItJVtP6"
   },
   "outputs": [],
   "source": [
    "from skimage import data, feature, exposure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 282
    },
    "colab_type": "code",
    "id": "Mc5KhyLWVtP8",
    "outputId": "5d4d24fa-8e56-4538-c269-6447d3eebc40"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f837493cac8>"
      ]
     },
     "execution_count": 20,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 349
    },
    "colab_type": "code",
    "id": "_iBww_Y0VtP_",
    "outputId": "cf1a7bd7-1beb-4b32-fcbe-72ca01c9b86c"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.20447270138324025 0.0993683816955817\n",
      "-0.21556082223199366 0.042726124349179974\n",
      "-0.09428870469466712 -0.014654777734303834\n",
      "-0.03023575252106837 -0.019981221057295676\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from skimage import data, feature, color, filters, img_as_float\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "\n",
    "original_image = img_as_float(train_images[0])\n",
    "img = color.rgb2gray(original_image)\n",
    "\n",
    "k = 1.6\n",
    "\n",
    "plt.subplot(2,3,1)\n",
    "plt.imshow(original_image)\n",
    "plt.title('Original Image')\n",
    "\n",
    "\n",
    "sigmas = np.array([4.0, 8.0, 16.0, 32.0])\n",
    "for idx, sigma in enumerate(sigmas):\n",
    "    s1 = filters.gaussian(img,k*sigma)\n",
    "    s2 = filters.gaussian(img,sigma)\n",
    "\n",
    "    # multiply by sigma to get scale invariance\n",
    "    dog = s1 - s2\n",
    "    plt.subplot(2,3,idx+2)\n",
    "    print(dog.min(),dog.max())\n",
    "    plt.imshow(dog,cmap='RdBu')\n",
    "    plt.title('DoG with sigma=' + str(sigma) + ', k=' + str(k))\n",
    "\n",
    "ax = plt.subplot(2,3,6)\n",
    "\n",
    "def blobify(img):\n",
    "    blobs_dog = [\n",
    "        (x[0], x[1], x[2])\n",
    "        for x in feature.blob_dog(\n",
    "            img, min_sigma=1e-12, max_sigma=5, threshold=0.0001, overlap=1.0\n",
    "        )\n",
    "    ]\n",
    "    blobs_dog += [\n",
    "        (x[0], x[1],x[2])\n",
    "        for x in feature.blob_dog(\n",
    "            -img, min_sigma=1e-12, max_sigma=5, threshold=0.0001, overlap=1.0\n",
    "        )\n",
    "    ]\n",
    "    return blobs_dog\n",
    "\n",
    "\n",
    "img_blobs = color.gray2rgb(img)\n",
    "for blob in blobify(img):\n",
    "    y, x, r = blob\n",
    "    c = plt.Circle((x, y), r, color='red', linewidth=2, fill=False)\n",
    "    ax.add_patch(c)\n",
    "plt.imshow(img_blobs)\n",
    "plt.title('Detected DoG Maxima')\n",
    "\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 220,
     "referenced_widgets": [
      "f5c69913c9c94e2cb813c4a73a775e6c",
      "25a49350a2e3449caacb56341ed6c2f7",
      "a50f56bf3dfa4803817f7f9a8b3f43a1",
      "18e49b801c83428aa47e9d2bde68cf53",
      "43adae0db038440db89db86137a8b891",
      "8d47b3d6094e47b18ed5ff17758ca758",
      "ffd7280d74a44872a7106e1a1fd7528e",
      "71a6e098b888434db51fd6fadd002b59",
      "3aa10c7f06e34ddb87418b0628d5c0b1",
      "cbac105d2d524286a8506f872e350cfc",
      "aa1a3dcdf26042cf846b3aa213f4b58a",
      "4a5361b5fb994ba8803c2af570cbb447",
      "969fb2fa34024793ae43f603d23a9df8",
      "360c4d52ff4b41ceb64e789f38ea6686",
      "0b34fd8ee8fa4176b75527837d16ec89",
      "b90aaa61133347d68792c2d6a2499f41"
     ]
    },
    "colab_type": "code",
    "id": "9JhpI_tJVtQC",
    "outputId": "8f44c7fd-2daa-428d-ca9f-796825ebaffc"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sat Jun 27 20:22:48 2020\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f5c69913c9c94e2cb813c4a73a775e6c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3aa10c7f06e34ddb87418b0628d5c0b1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "accuracy: 0.840\n",
      "Execution Time:  532 s\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.svm import LinearSVC\n",
    "from tqdm.notebook import tqdm\n",
    "import time\n",
    "\n",
    "print(time.asctime( time.localtime(time.time()) ))\n",
    "start_time = time.time()\n",
    "\n",
    "def featurize(x_train, y_train):\n",
    "    data = []\n",
    "    labels = []\n",
    "    for img, label in tqdm(zip(x_train, y_train)):\n",
    "        data.append(get_pyramid_features(img))\n",
    "        labels.append(label)\n",
    "\n",
    "    data = np.array(data)\n",
    "    labels = np.array(labels)\n",
    "    return data, labels\n",
    "\n",
    "x_tra, y_tra = featurize(train_images, train_labels)\n",
    "clf = LinearSVC(C=1, loss='hinge').fit(x_tra, y_tra)\n",
    "\n",
    "x_val, y_val = featurize(test_images, test_labels)\n",
    "print('accuracy: {:.3f}'.format(clf.score(x_val, y_val)))\n",
    "\n",
    "\n",
    "end_time = time.time()\n",
    "print(\"Execution Time: \", int(end_time - start_time),'s')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "bpa2k41j7nSx"
   },
   "source": [
    "please see documentation at https://scikit-image.org/docs/0.8.0/api/skimage.transform.pyramids.html#id2\n",
    "\n",
    "you can see wikipedia for more details: https://en.wikipedia.org/wiki/Scale_space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ikmsWrQVVtQH"
   },
   "outputs": [],
   "source": [
    "# https://en.wikipedia.org/wiki/LeNet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Rdg8Wv8oVtQJ"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from tensorflow.keras.layers import Dense, Dropout, Flatten, Activation\n",
    "from tensorflow.keras.layers import Conv2D, MaxPooling2D\n",
    "import tensorflow as tf\n",
    "\n",
    "def compile_model(model):\n",
    "    model.summary()\n",
    "    model.compile(\n",
    "        optimizer='adam',\n",
    "        loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
    "        metrics=['accuracy']\n",
    "    )    \n",
    "\n",
    "def create_mlp():\n",
    "    model = tf.keras.Sequential([\n",
    "        tf.keras.layers.Flatten(input_shape=(28, 28)),\n",
    "        tf.keras.layers.Dense(128, activation='relu'),\n",
    "        tf.keras.layers.Dense(10)\n",
    "    ])\n",
    "    compile_model(model)\n",
    "    return model\n",
    "\n",
    "\n",
    "def create_lenet():\n",
    "    model = tf.keras.Sequential([\n",
    "        tf.keras.layers.Conv2D(filters=6, kernel_size=(5, 5), padding='valid', input_shape=(28, 28, 1), activation='tanh'),  # C1\n",
    "        tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),\n",
    "        tf.keras.layers.Conv2D(filters=16, kernel_size=(5, 5), padding='valid', activation='tanh'),  # C3\n",
    "        tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),\n",
    "        tf.keras.layers.Flatten(),\n",
    "        tf.keras.layers.Dense(120, activation='tanh'),\n",
    "        tf.keras.layers.Dense(84, activation='tanh'),\n",
    "        tf.keras.layers.Dense(10, activation='softmax')\n",
    "    ])\n",
    "    compile_model(model)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 255
    },
    "colab_type": "code",
    "id": "znq2ZwnHVtQL",
    "outputId": "c6a8f579-eea0-44c8-c212-f9041d3216e3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "flatten (Flatten)            (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 128)               100480    \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 101,770\n",
      "Trainable params: 101,770\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = create_mlp()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 71
    },
    "colab_type": "code",
    "id": "kn0J-iGGVtQO",
    "outputId": "ecdcb26e-d060-4660-d72f-4ddc8b6db203"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
      "  import pandas.util.testing as tm\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import ConfusionMatrixDisplay, plot_confusion_matrix\n",
    "import matplotlib\n",
    "import seaborn as sns\n",
    "import pandas as pd\n",
    "\n",
    "font = {'family' : 'normal',\n",
    "        'weight' : 'bold',\n",
    "        'size'   : 12}\n",
    "matplotlib.rc('figure', figsize=(10, 10))\n",
    "np.set_printoptions(precision=2)\n",
    "matplotlib.rc('font', **font)\n",
    "\n",
    "def show_result(model, test_images):\n",
    "    predictions = model.predict(test_images).argmax(axis=1)\n",
    "    print(classification_report(test_labels, predictions, target_names=class_names))\n",
    "    cm = confusion_matrix(test_labels, predictions, normalize='pred')\n",
    "    sns.heatmap(\n",
    "        pd.DataFrame(cm, columns=class_names, index=class_names),\n",
    "        annot=True,\n",
    "        cmap='Blues',\n",
    "        fmt='.2f'\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "TIYoq4NRVtQQ"
   },
   "outputs": [],
   "source": [
    "def train_model(model, train_images, test_images):\n",
    "    model.fit(\n",
    "        train_images,\n",
    "        train_labels,\n",
    "        epochs=50,\n",
    "        verbose=1,\n",
    "        validation_data=(test_images, test_labels)\n",
    "    )\n",
    "    loss, accuracy = model.evaluate(test_images, test_labels, verbose=0)\n",
    "    print('loss:', loss)\n",
    "    print('accuracy:', accuracy)\n",
    "    show_result(model, test_images)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "Z0zYTmOIVtQU",
    "outputId": "0d5963f3-02cb-4037-b89f-50b96aa06956"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_2\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "flatten_2 (Flatten)          (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 128)               100480    \n",
      "_________________________________________________________________\n",
      "dense_5 (Dense)              (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 101,770\n",
      "Trainable params: 101,770\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Epoch 1/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.4980 - accuracy: 0.8265 - val_loss: 0.4393 - val_accuracy: 0.8430\n",
      "Epoch 2/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.3728 - accuracy: 0.8655 - val_loss: 0.4091 - val_accuracy: 0.8519\n",
      "Epoch 3/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.3369 - accuracy: 0.8767 - val_loss: 0.3591 - val_accuracy: 0.8709\n",
      "Epoch 4/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.3097 - accuracy: 0.8862 - val_loss: 0.3729 - val_accuracy: 0.8693\n",
      "Epoch 5/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2960 - accuracy: 0.8902 - val_loss: 0.3616 - val_accuracy: 0.8673\n",
      "Epoch 6/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2794 - accuracy: 0.8963 - val_loss: 0.3543 - val_accuracy: 0.8741\n",
      "Epoch 7/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2679 - accuracy: 0.9005 - val_loss: 0.3487 - val_accuracy: 0.8767\n",
      "Epoch 8/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2572 - accuracy: 0.9033 - val_loss: 0.3416 - val_accuracy: 0.8803\n",
      "Epoch 9/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2470 - accuracy: 0.9065 - val_loss: 0.3558 - val_accuracy: 0.8694\n",
      "Epoch 10/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2375 - accuracy: 0.9108 - val_loss: 0.3295 - val_accuracy: 0.8854\n",
      "Epoch 11/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2312 - accuracy: 0.9128 - val_loss: 0.3545 - val_accuracy: 0.8740\n",
      "Epoch 12/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2228 - accuracy: 0.9159 - val_loss: 0.3377 - val_accuracy: 0.8853\n",
      "Epoch 13/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2172 - accuracy: 0.9183 - val_loss: 0.3410 - val_accuracy: 0.8846\n",
      "Epoch 14/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2115 - accuracy: 0.9208 - val_loss: 0.3372 - val_accuracy: 0.8869\n",
      "Epoch 15/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.2040 - accuracy: 0.9233 - val_loss: 0.3503 - val_accuracy: 0.8843\n",
      "Epoch 16/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1997 - accuracy: 0.9255 - val_loss: 0.3397 - val_accuracy: 0.8875\n",
      "Epoch 17/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1928 - accuracy: 0.9283 - val_loss: 0.3438 - val_accuracy: 0.8898\n",
      "Epoch 18/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1870 - accuracy: 0.9298 - val_loss: 0.3718 - val_accuracy: 0.8870\n",
      "Epoch 19/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1824 - accuracy: 0.9316 - val_loss: 0.3684 - val_accuracy: 0.8826\n",
      "Epoch 20/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1775 - accuracy: 0.9329 - val_loss: 0.3490 - val_accuracy: 0.8926\n",
      "Epoch 21/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1741 - accuracy: 0.9346 - val_loss: 0.3617 - val_accuracy: 0.8882\n",
      "Epoch 22/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1691 - accuracy: 0.9368 - val_loss: 0.3767 - val_accuracy: 0.8835\n",
      "Epoch 23/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1655 - accuracy: 0.9383 - val_loss: 0.3709 - val_accuracy: 0.8914\n",
      "Epoch 24/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1612 - accuracy: 0.9395 - val_loss: 0.3897 - val_accuracy: 0.8875\n",
      "Epoch 25/50\n",
      "1875/1875 [==============================] - 5s 2ms/step - loss: 0.1581 - accuracy: 0.9407 - val_loss: 0.3744 - val_accuracy: 0.8850\n",
      "Epoch 26/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1523 - accuracy: 0.9435 - val_loss: 0.4076 - val_accuracy: 0.8814\n",
      "Epoch 27/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1502 - accuracy: 0.9440 - val_loss: 0.4171 - val_accuracy: 0.8836\n",
      "Epoch 28/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1479 - accuracy: 0.9447 - val_loss: 0.4124 - val_accuracy: 0.8878\n",
      "Epoch 29/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1432 - accuracy: 0.9460 - val_loss: 0.4151 - val_accuracy: 0.8883\n",
      "Epoch 30/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1401 - accuracy: 0.9478 - val_loss: 0.4316 - val_accuracy: 0.8847\n",
      "Epoch 31/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1388 - accuracy: 0.9486 - val_loss: 0.4275 - val_accuracy: 0.8851\n",
      "Epoch 32/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1347 - accuracy: 0.9493 - val_loss: 0.4293 - val_accuracy: 0.8878\n",
      "Epoch 33/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1318 - accuracy: 0.9504 - val_loss: 0.4212 - val_accuracy: 0.8913\n",
      "Epoch 34/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1284 - accuracy: 0.9524 - val_loss: 0.4337 - val_accuracy: 0.8889\n",
      "Epoch 35/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1270 - accuracy: 0.9527 - val_loss: 0.4764 - val_accuracy: 0.8839\n",
      "Epoch 36/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1253 - accuracy: 0.9531 - val_loss: 0.4532 - val_accuracy: 0.8868\n",
      "Epoch 37/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1222 - accuracy: 0.9549 - val_loss: 0.4490 - val_accuracy: 0.8897\n",
      "Epoch 38/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1205 - accuracy: 0.9552 - val_loss: 0.4450 - val_accuracy: 0.8888\n",
      "Epoch 39/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1177 - accuracy: 0.9563 - val_loss: 0.4476 - val_accuracy: 0.8926\n",
      "Epoch 40/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1154 - accuracy: 0.9573 - val_loss: 0.4614 - val_accuracy: 0.8867\n",
      "Epoch 41/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1128 - accuracy: 0.9580 - val_loss: 0.4611 - val_accuracy: 0.8887\n",
      "Epoch 42/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1125 - accuracy: 0.9590 - val_loss: 0.4800 - val_accuracy: 0.8878\n",
      "Epoch 43/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1092 - accuracy: 0.9590 - val_loss: 0.4825 - val_accuracy: 0.8915\n",
      "Epoch 44/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1087 - accuracy: 0.9591 - val_loss: 0.4870 - val_accuracy: 0.8888\n",
      "Epoch 45/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1042 - accuracy: 0.9608 - val_loss: 0.5192 - val_accuracy: 0.8863\n",
      "Epoch 46/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1033 - accuracy: 0.9617 - val_loss: 0.5116 - val_accuracy: 0.8875\n",
      "Epoch 47/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1015 - accuracy: 0.9625 - val_loss: 0.5113 - val_accuracy: 0.8861\n",
      "Epoch 48/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.1005 - accuracy: 0.9632 - val_loss: 0.5138 - val_accuracy: 0.8843\n",
      "Epoch 49/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.0978 - accuracy: 0.9638 - val_loss: 0.5381 - val_accuracy: 0.8858\n",
      "Epoch 50/50\n",
      "1875/1875 [==============================] - 4s 2ms/step - loss: 0.0977 - accuracy: 0.9642 - val_loss: 0.5325 - val_accuracy: 0.8866\n",
      "loss: 0.5324922204017639\n",
      "accuracy: 0.8866000175476074\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['normal'] not found. Falling back to DejaVu Sans.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      " T-shirt/top       0.82      0.84      0.83      1000\n",
      "     Trouser       0.98      0.98      0.98      1000\n",
      "    Pullover       0.80      0.79      0.80      1000\n",
      "       Dress       0.88      0.89      0.88      1000\n",
      "        Coat       0.78      0.85      0.81      1000\n",
      "      Sandal       0.98      0.96      0.97      1000\n",
      "       Shirt       0.74      0.66      0.70      1000\n",
      "     Sneaker       0.94      0.97      0.95      1000\n",
      "         Bag       0.96      0.98      0.97      1000\n",
      "  Ankle boot       0.96      0.95      0.96      1000\n",
      "\n",
      "    accuracy                           0.89     10000\n",
      "   macro avg       0.89      0.89      0.89     10000\n",
      "weighted avg       0.89      0.89      0.89     10000\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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mJlAJ2AnsMLJdhPwiWVZgzJ04AZbljXI29eclQ6ciPheHh9Y8Il8dn60V1ntwOUnWenA5SdZ7cDlN3negYvMww5ctfzTgcvLixhOYne7koA22F2yo9gXJozK4nO8in2RQSz2BKwVsA2Y6azvDWwF6mF39cZf6Iksy9rn5DgGDHWuZu0FjMA+D64H0Bz4CViaxXwiIiIil1yenwNXkKgDJ3J5uPHXmjpwl546cHkjrztwP0f+nWcD1bRaqXzzk1qg/istERERkX+CPLuIQURERMTX3Na99hV14ERERERcRh04ERERca0C2oBTB05ERETEbdSBExEREfcqoC04deBEREREXEYdOBEREXEtU0BbcOrAiYiIiLiMOnAiIiLiWnofOBERERFxBXXgRERExLUKaANOHTgRERERt9EETkRERMRldAhVRERE3KuAHkNVB05ERETEB4wxRY0x7xtjDhtjEo0xPxhjml6k/lNjzBZjzAljTIwxZrExpm5WtqUJnIiIiLiWycN/WfAO8ARwCFgANANWGGNCLlDfCzgKfAEcA1oDS40xRb1tSIdQRURERHLJGFMW6AmkArdalnXYGJMMdMOe1A3K5GGNLcv6zXl8ZWAXUBGoDfx+se2pAyciIiKuZUze3byoAxQC9lqWddhZ9qtz3zCzB6RN3hyFnfsU4KC3jWkCJyIiIpIFxpi+xphfM9z6Zlhdzrk/kWFZvHNf3svzFgcmO5+OtSzL6wROh1BFRETEtfLyIlTLsiYAEy6w+pBzXzzDsrSPoy70nMaYMsBioDEwEXgxK1k0gRNXs6zLnSD7Cur/25eX3DjGqS7bmeNWv3m5I2RbUPPnLneEbIn7cczljiDZ8wdwGqhkjClnWdYhoImzLsIYUwoIBU5alrUbwBhzNbAcqAkMtyzr5axuTIdQRURExL1MHt4uwpmwTcGeW600xswAumAfUv0A6Ahswb46Nc2P2JO3vUCgMeYd53adty9bHTgRERER3/gXdheuE1AdWAsMsCzriMn80EAF576S89g064FfLrYhTeBERETEtbL4/mx5wrKsRKC/czt33RTsDl3GZTkOr0OoIiIiIi6jDpyIiIi4lhsvWvIFdeBEREREXEYdOBEREXGtAtqAUwdORERExG3UgRMRERH3KqAtOHXgRERERFxGEzgRERERl9EhVBEREXGt/PRGvnlJ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ulJbAScDywmLAouIiEjMElMSq2JqwOX3JdCc0G26kNCFep27j4k1lYiIiNRoasDl4e6vAa/FnUNERETKUUNLcDVlFqqIiIhItaEKnIiIiKSW1dASnCpwIiIiIimjCpyIiIikVgqXJKwUqsCJiIiIpIwqcCIiIpJaNbQApwqciIiISNqoAiciIiLpVUNLcKrAiYiIiKSMGnAiIiIiKaMuVBEREUktLeQrIiIiIqmgCpyIiIiklhbyFREREZFUUAVOREREUquGFuBUgRMRERFJG1XgREREJLU0Bk5EREREUsHcPe4M1dbipejiisQgjS9raasiLF6yLO4Iq6zO2rXjjrBKGu5zRdwRVsuiMTdX6bP5u3m/Vdlv/KYN10nMb6oqcCIiIiIpozFwIiIiklppq15XFlXgRERERFJGFTgRERFJrRpagFMFTkRERCRtVIETERGR1NIYOBERERFJBTXgRERERFJGXagiIiKSWlZDpzGoAiciIiKSMqrAiYiISHrVzAKcKnAiIiIiaaMKnIiIiKRWDS3AqQInIiIikjaqwImIiEhqaSFfEREREUkFVeBEREQktbQOnIiIiIikgipwIiIikl41swCnCpyIiIhI2qgCJyIiIqlVQwtwqsDF7ddff+WmG66j0757stsuO3DqScfzyScfV+j8oUNe48jDurLrTttxyB/259FHHlLmlGVOW940Zv7111/pfeN1dO64J7t32IFTTz6eTwvkLXT+0CGvcdThXfndzttxyIH782jfmn2NMxlu6309B3feh46778xZp57E+E/zZy7m/P/Nn0/XP+zH7ju144B9dq/UvGm7xuuusxa3X3oYUwf9nbkjrmd4n3P5XfvNyj2/bcumDLjtVL4dfA2zhv2DZ27+I5s3b1DqnM2bN6DfdSfy3ZBrmDfyej599q8c0Xm7Ss0tFVMlDTgza2lmbma+OrcX+Rgjovs4bbWDxuCW3jfQ/6knady4CZ33/z0ffzyOc848nXnz5q7W+R+P+4jLL72YH2ZM5+BDurJ02VLuvP02nn2mvzKnKHPa8qYx861lHv+Tj8dxzlnl5y10/sfjPuKKy0Legw7pyrJlS7nr9tsYUIOvMcAdt97Es/2folHjxnTsfACffjKOC845k/nz5lXo/Juu78m8cu6jItJ4jW+9qBvndt+bWXMX8PKoz9h9u8155e4zabxh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\n",
      "text/plain": [
       "<Figure size 720x720 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_model(create_mlp(), train_images, test_images)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "E3G_wf3TVtQX",
    "outputId": "2c141a38-04c2-4595-d33a-cbfc87b65a23"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_3\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d (Conv2D)              (None, 24, 24, 6)         156       \n",
      "_________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D) (None, 12, 12, 6)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 8, 8, 16)          2416      \n",
      "_________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2 (None, 4, 4, 16)          0         \n",
      "_________________________________________________________________\n",
      "flatten_3 (Flatten)          (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 120)               30840     \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 84)                10164     \n",
      "_________________________________________________________________\n",
      "dense_8 (Dense)              (None, 10)                850       \n",
      "=================================================================\n",
      "Total params: 44,426\n",
      "Trainable params: 44,426\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Epoch 1/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.6737 - accuracy: 0.7934 - val_loss: 1.6237 - val_accuracy: 0.8395\n",
      "Epoch 2/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.6126 - accuracy: 0.8497 - val_loss: 1.6121 - val_accuracy: 0.8499\n",
      "Epoch 3/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.6002 - accuracy: 0.8615 - val_loss: 1.6002 - val_accuracy: 0.8622\n",
      "Epoch 4/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5884 - accuracy: 0.8731 - val_loss: 1.6034 - val_accuracy: 0.8575\n",
      "Epoch 5/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5822 - accuracy: 0.8792 - val_loss: 1.5930 - val_accuracy: 0.8688\n",
      "Epoch 6/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5772 - accuracy: 0.8846 - val_loss: 1.5926 - val_accuracy: 0.8682\n",
      "Epoch 7/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5725 - accuracy: 0.8888 - val_loss: 1.5897 - val_accuracy: 0.8715\n",
      "Epoch 8/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5683 - accuracy: 0.8933 - val_loss: 1.5814 - val_accuracy: 0.8803\n",
      "Epoch 9/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5637 - accuracy: 0.8982 - val_loss: 1.5807 - val_accuracy: 0.8802\n",
      "Epoch 10/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5608 - accuracy: 0.9011 - val_loss: 1.5841 - val_accuracy: 0.8768\n",
      "Epoch 11/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5590 - accuracy: 0.9028 - val_loss: 1.5834 - val_accuracy: 0.8788\n",
      "Epoch 12/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5555 - accuracy: 0.9061 - val_loss: 1.5785 - val_accuracy: 0.8821\n",
      "Epoch 13/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5534 - accuracy: 0.9085 - val_loss: 1.5812 - val_accuracy: 0.8791\n",
      "Epoch 14/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5516 - accuracy: 0.9102 - val_loss: 1.5769 - val_accuracy: 0.8837\n",
      "Epoch 15/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5496 - accuracy: 0.9121 - val_loss: 1.5791 - val_accuracy: 0.8824\n",
      "Epoch 16/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5477 - accuracy: 0.9141 - val_loss: 1.5768 - val_accuracy: 0.8833\n",
      "Epoch 17/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5457 - accuracy: 0.9158 - val_loss: 1.5813 - val_accuracy: 0.8791\n",
      "Epoch 18/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5438 - accuracy: 0.9180 - val_loss: 1.5777 - val_accuracy: 0.8840\n",
      "Epoch 19/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5428 - accuracy: 0.9188 - val_loss: 1.5755 - val_accuracy: 0.8857\n",
      "Epoch 20/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5419 - accuracy: 0.9197 - val_loss: 1.5739 - val_accuracy: 0.8865\n",
      "Epoch 21/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5407 - accuracy: 0.9212 - val_loss: 1.5744 - val_accuracy: 0.8871\n",
      "Epoch 22/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5394 - accuracy: 0.9226 - val_loss: 1.5746 - val_accuracy: 0.8862\n",
      "Epoch 23/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5378 - accuracy: 0.9238 - val_loss: 1.5802 - val_accuracy: 0.8803\n",
      "Epoch 24/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5366 - accuracy: 0.9252 - val_loss: 1.5732 - val_accuracy: 0.8883\n",
      "Epoch 25/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5355 - accuracy: 0.9264 - val_loss: 1.5719 - val_accuracy: 0.8895\n",
      "Epoch 26/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5345 - accuracy: 0.9275 - val_loss: 1.5757 - val_accuracy: 0.8850\n",
      "Epoch 27/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5346 - accuracy: 0.9267 - val_loss: 1.5717 - val_accuracy: 0.8891\n",
      "Epoch 28/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5336 - accuracy: 0.9283 - val_loss: 1.5757 - val_accuracy: 0.8851\n",
      "Epoch 29/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5325 - accuracy: 0.9290 - val_loss: 1.5693 - val_accuracy: 0.8917\n",
      "Epoch 30/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5308 - accuracy: 0.9309 - val_loss: 1.5724 - val_accuracy: 0.8881\n",
      "Epoch 31/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5313 - accuracy: 0.9308 - val_loss: 1.5699 - val_accuracy: 0.8904\n",
      "Epoch 32/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5295 - accuracy: 0.9324 - val_loss: 1.5783 - val_accuracy: 0.8821\n",
      "Epoch 33/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5304 - accuracy: 0.9312 - val_loss: 1.5715 - val_accuracy: 0.8891\n",
      "Epoch 34/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5283 - accuracy: 0.9333 - val_loss: 1.5711 - val_accuracy: 0.8895\n",
      "Epoch 35/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5274 - accuracy: 0.9343 - val_loss: 1.5740 - val_accuracy: 0.8879\n",
      "Epoch 36/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5263 - accuracy: 0.9355 - val_loss: 1.5759 - val_accuracy: 0.8848\n",
      "Epoch 37/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5262 - accuracy: 0.9355 - val_loss: 1.5733 - val_accuracy: 0.8872\n",
      "Epoch 38/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5271 - accuracy: 0.9342 - val_loss: 1.5739 - val_accuracy: 0.8869\n",
      "Epoch 39/50\n",
      "1875/1875 [==============================] - 6s 3ms/step - loss: 1.5256 - accuracy: 0.9360 - val_loss: 1.5768 - val_accuracy: 0.8837\n",
      "Epoch 40/50\n",
      "1875/1875 [==============================] - 6s 3ms/step - loss: 1.5251 - accuracy: 0.9366 - val_loss: 1.5827 - val_accuracy: 0.8773\n",
      "Epoch 41/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5256 - accuracy: 0.9361 - val_loss: 1.5717 - val_accuracy: 0.8896\n",
      "Epoch 42/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5229 - accuracy: 0.9387 - val_loss: 1.5742 - val_accuracy: 0.8866\n",
      "Epoch 43/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5232 - accuracy: 0.9386 - val_loss: 1.5739 - val_accuracy: 0.8863\n",
      "Epoch 44/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5242 - accuracy: 0.9372 - val_loss: 1.5703 - val_accuracy: 0.8917\n",
      "Epoch 45/50\n",
      "1875/1875 [==============================] - 5s 3ms/step - loss: 1.5235 - accuracy: 0.9380 - val_loss: 1.5698 - val_accuracy: 0.8917\n",
      "Epoch 46/50\n",
      "1872/1875 [============================>.] - ETA: 0s - loss: 1.5231 - accuracy: 0.9386"
     ]
    }
   ],
   "source": [
    "train_model(\n",
    "    create_lenet(),\n",
    "    train_images.reshape(train_images.shape + (1,)),\n",
    "    test_images.reshape(test_images.shape + (1,)),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "1cgCHneZVtQc"
   },
   "outputs": [],
   "source": [
    "base_model = tf.keras.applications.MobileNetV2(\n",
    "    input_shape=(224, 224, 3),\n",
    "    include_top=False,\n",
    "    weights='imagenet'\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XwU6GwfTVtQd"
   },
   "source": [
    "doesn't include the classification layers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "KPnexKydVtQe",
    "outputId": "a4f5d730-35b9-450f-efd0-6b0ca43993e1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"mobilenetv2_1.00_224\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_2 (InputLayer)            [(None, 224, 224, 3) 0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Conv1_pad (ZeroPadding2D)       (None, 225, 225, 3)  0           input_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "Conv1 (Conv2D)                  (None, 112, 112, 32) 864         Conv1_pad[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "bn_Conv1 (BatchNormalization)   (None, 112, 112, 32) 128         Conv1[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "Conv1_relu (ReLU)               (None, 112, 112, 32) 0           bn_Conv1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "expanded_conv_depthwise (Depthw (None, 112, 112, 32) 288         Conv1_relu[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "expanded_conv_depthwise_BN (Bat (None, 112, 112, 32) 128         expanded_conv_depthwise[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "expanded_conv_depthwise_relu (R (None, 112, 112, 32) 0           expanded_conv_depthwise_BN[0][0] \n",
      "__________________________________________________________________________________________________\n",
      "expanded_conv_project (Conv2D)  (None, 112, 112, 16) 512         expanded_conv_depthwise_relu[0][0\n",
      "__________________________________________________________________________________________________\n",
      "expanded_conv_project_BN (Batch (None, 112, 112, 16) 64          expanded_conv_project[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_1_expand (Conv2D)         (None, 112, 112, 96) 1536        expanded_conv_project_BN[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "block_1_expand_BN (BatchNormali (None, 112, 112, 96) 384         block_1_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_1_expand_relu (ReLU)      (None, 112, 112, 96) 0           block_1_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_1_pad (ZeroPadding2D)     (None, 113, 113, 96) 0           block_1_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_1_depthwise (DepthwiseCon (None, 56, 56, 96)   864         block_1_pad[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_1_depthwise_BN (BatchNorm (None, 56, 56, 96)   384         block_1_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_1_depthwise_relu (ReLU)   (None, 56, 56, 96)   0           block_1_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_1_project (Conv2D)        (None, 56, 56, 24)   2304        block_1_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_1_project_BN (BatchNormal (None, 56, 56, 24)   96          block_1_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_2_expand (Conv2D)         (None, 56, 56, 144)  3456        block_1_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_2_expand_BN (BatchNormali (None, 56, 56, 144)  576         block_2_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_2_expand_relu (ReLU)      (None, 56, 56, 144)  0           block_2_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_2_depthwise (DepthwiseCon (None, 56, 56, 144)  1296        block_2_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_2_depthwise_BN (BatchNorm (None, 56, 56, 144)  576         block_2_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_2_depthwise_relu (ReLU)   (None, 56, 56, 144)  0           block_2_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_2_project (Conv2D)        (None, 56, 56, 24)   3456        block_2_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_2_project_BN (BatchNormal (None, 56, 56, 24)   96          block_2_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_2_add (Add)               (None, 56, 56, 24)   0           block_1_project_BN[0][0]         \n",
      "                                                                 block_2_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_3_expand (Conv2D)         (None, 56, 56, 144)  3456        block_2_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_3_expand_BN (BatchNormali (None, 56, 56, 144)  576         block_3_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_3_expand_relu (ReLU)      (None, 56, 56, 144)  0           block_3_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_3_pad (ZeroPadding2D)     (None, 57, 57, 144)  0           block_3_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_3_depthwise (DepthwiseCon (None, 28, 28, 144)  1296        block_3_pad[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_3_depthwise_BN (BatchNorm (None, 28, 28, 144)  576         block_3_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_3_depthwise_relu (ReLU)   (None, 28, 28, 144)  0           block_3_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_3_project (Conv2D)        (None, 28, 28, 32)   4608        block_3_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_3_project_BN (BatchNormal (None, 28, 28, 32)   128         block_3_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_4_expand (Conv2D)         (None, 28, 28, 192)  6144        block_3_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_4_expand_BN (BatchNormali (None, 28, 28, 192)  768         block_4_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_4_expand_relu (ReLU)      (None, 28, 28, 192)  0           block_4_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_4_depthwise (DepthwiseCon (None, 28, 28, 192)  1728        block_4_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_4_depthwise_BN (BatchNorm (None, 28, 28, 192)  768         block_4_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_4_depthwise_relu (ReLU)   (None, 28, 28, 192)  0           block_4_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_4_project (Conv2D)        (None, 28, 28, 32)   6144        block_4_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_4_project_BN (BatchNormal (None, 28, 28, 32)   128         block_4_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_4_add (Add)               (None, 28, 28, 32)   0           block_3_project_BN[0][0]         \n",
      "                                                                 block_4_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_5_expand (Conv2D)         (None, 28, 28, 192)  6144        block_4_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_5_expand_BN (BatchNormali (None, 28, 28, 192)  768         block_5_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_5_expand_relu (ReLU)      (None, 28, 28, 192)  0           block_5_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_5_depthwise (DepthwiseCon (None, 28, 28, 192)  1728        block_5_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_5_depthwise_BN (BatchNorm (None, 28, 28, 192)  768         block_5_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_5_depthwise_relu (ReLU)   (None, 28, 28, 192)  0           block_5_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_5_project (Conv2D)        (None, 28, 28, 32)   6144        block_5_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_5_project_BN (BatchNormal (None, 28, 28, 32)   128         block_5_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_5_add (Add)               (None, 28, 28, 32)   0           block_4_add[0][0]                \n",
      "                                                                 block_5_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_6_expand (Conv2D)         (None, 28, 28, 192)  6144        block_5_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_6_expand_BN (BatchNormali (None, 28, 28, 192)  768         block_6_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_6_expand_relu (ReLU)      (None, 28, 28, 192)  0           block_6_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_6_pad (ZeroPadding2D)     (None, 29, 29, 192)  0           block_6_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_6_depthwise (DepthwiseCon (None, 14, 14, 192)  1728        block_6_pad[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_6_depthwise_BN (BatchNorm (None, 14, 14, 192)  768         block_6_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_6_depthwise_relu (ReLU)   (None, 14, 14, 192)  0           block_6_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_6_project (Conv2D)        (None, 14, 14, 64)   12288       block_6_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_6_project_BN (BatchNormal (None, 14, 14, 64)   256         block_6_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_7_expand (Conv2D)         (None, 14, 14, 384)  24576       block_6_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_7_expand_BN (BatchNormali (None, 14, 14, 384)  1536        block_7_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_7_expand_relu (ReLU)      (None, 14, 14, 384)  0           block_7_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_7_depthwise (DepthwiseCon (None, 14, 14, 384)  3456        block_7_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_7_depthwise_BN (BatchNorm (None, 14, 14, 384)  1536        block_7_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_7_depthwise_relu (ReLU)   (None, 14, 14, 384)  0           block_7_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_7_project (Conv2D)        (None, 14, 14, 64)   24576       block_7_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_7_project_BN (BatchNormal (None, 14, 14, 64)   256         block_7_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_7_add (Add)               (None, 14, 14, 64)   0           block_6_project_BN[0][0]         \n",
      "                                                                 block_7_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_8_expand (Conv2D)         (None, 14, 14, 384)  24576       block_7_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_8_expand_BN (BatchNormali (None, 14, 14, 384)  1536        block_8_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_8_expand_relu (ReLU)      (None, 14, 14, 384)  0           block_8_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_8_depthwise (DepthwiseCon (None, 14, 14, 384)  3456        block_8_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_8_depthwise_BN (BatchNorm (None, 14, 14, 384)  1536        block_8_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_8_depthwise_relu (ReLU)   (None, 14, 14, 384)  0           block_8_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_8_project (Conv2D)        (None, 14, 14, 64)   24576       block_8_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_8_project_BN (BatchNormal (None, 14, 14, 64)   256         block_8_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_8_add (Add)               (None, 14, 14, 64)   0           block_7_add[0][0]                \n",
      "                                                                 block_8_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_9_expand (Conv2D)         (None, 14, 14, 384)  24576       block_8_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_9_expand_BN (BatchNormali (None, 14, 14, 384)  1536        block_9_expand[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "block_9_expand_relu (ReLU)      (None, 14, 14, 384)  0           block_9_expand_BN[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_9_depthwise (DepthwiseCon (None, 14, 14, 384)  3456        block_9_expand_relu[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_9_depthwise_BN (BatchNorm (None, 14, 14, 384)  1536        block_9_depthwise[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "block_9_depthwise_relu (ReLU)   (None, 14, 14, 384)  0           block_9_depthwise_BN[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_9_project (Conv2D)        (None, 14, 14, 64)   24576       block_9_depthwise_relu[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "block_9_project_BN (BatchNormal (None, 14, 14, 64)   256         block_9_project[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_9_add (Add)               (None, 14, 14, 64)   0           block_8_add[0][0]                \n",
      "                                                                 block_9_project_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_10_expand (Conv2D)        (None, 14, 14, 384)  24576       block_9_add[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "block_10_expand_BN (BatchNormal (None, 14, 14, 384)  1536        block_10_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_10_expand_relu (ReLU)     (None, 14, 14, 384)  0           block_10_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_10_depthwise (DepthwiseCo (None, 14, 14, 384)  3456        block_10_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_10_depthwise_BN (BatchNor (None, 14, 14, 384)  1536        block_10_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_10_depthwise_relu (ReLU)  (None, 14, 14, 384)  0           block_10_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_10_project (Conv2D)       (None, 14, 14, 96)   36864       block_10_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_10_project_BN (BatchNorma (None, 14, 14, 96)   384         block_10_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_11_expand (Conv2D)        (None, 14, 14, 576)  55296       block_10_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_11_expand_BN (BatchNormal (None, 14, 14, 576)  2304        block_11_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_11_expand_relu (ReLU)     (None, 14, 14, 576)  0           block_11_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_11_depthwise (DepthwiseCo (None, 14, 14, 576)  5184        block_11_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_11_depthwise_BN (BatchNor (None, 14, 14, 576)  2304        block_11_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_11_depthwise_relu (ReLU)  (None, 14, 14, 576)  0           block_11_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_11_project (Conv2D)       (None, 14, 14, 96)   55296       block_11_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_11_project_BN (BatchNorma (None, 14, 14, 96)   384         block_11_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_11_add (Add)              (None, 14, 14, 96)   0           block_10_project_BN[0][0]        \n",
      "                                                                 block_11_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_12_expand (Conv2D)        (None, 14, 14, 576)  55296       block_11_add[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block_12_expand_BN (BatchNormal (None, 14, 14, 576)  2304        block_12_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_12_expand_relu (ReLU)     (None, 14, 14, 576)  0           block_12_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_12_depthwise (DepthwiseCo (None, 14, 14, 576)  5184        block_12_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_12_depthwise_BN (BatchNor (None, 14, 14, 576)  2304        block_12_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_12_depthwise_relu (ReLU)  (None, 14, 14, 576)  0           block_12_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_12_project (Conv2D)       (None, 14, 14, 96)   55296       block_12_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_12_project_BN (BatchNorma (None, 14, 14, 96)   384         block_12_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_12_add (Add)              (None, 14, 14, 96)   0           block_11_add[0][0]               \n",
      "                                                                 block_12_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_13_expand (Conv2D)        (None, 14, 14, 576)  55296       block_12_add[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block_13_expand_BN (BatchNormal (None, 14, 14, 576)  2304        block_13_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_13_expand_relu (ReLU)     (None, 14, 14, 576)  0           block_13_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_13_pad (ZeroPadding2D)    (None, 15, 15, 576)  0           block_13_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_13_depthwise (DepthwiseCo (None, 7, 7, 576)    5184        block_13_pad[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block_13_depthwise_BN (BatchNor (None, 7, 7, 576)    2304        block_13_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_13_depthwise_relu (ReLU)  (None, 7, 7, 576)    0           block_13_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_13_project (Conv2D)       (None, 7, 7, 160)    92160       block_13_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_13_project_BN (BatchNorma (None, 7, 7, 160)    640         block_13_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_14_expand (Conv2D)        (None, 7, 7, 960)    153600      block_13_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_14_expand_BN (BatchNormal (None, 7, 7, 960)    3840        block_14_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_14_expand_relu (ReLU)     (None, 7, 7, 960)    0           block_14_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_14_depthwise (DepthwiseCo (None, 7, 7, 960)    8640        block_14_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_14_depthwise_BN (BatchNor (None, 7, 7, 960)    3840        block_14_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_14_depthwise_relu (ReLU)  (None, 7, 7, 960)    0           block_14_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_14_project (Conv2D)       (None, 7, 7, 160)    153600      block_14_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_14_project_BN (BatchNorma (None, 7, 7, 160)    640         block_14_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_14_add (Add)              (None, 7, 7, 160)    0           block_13_project_BN[0][0]        \n",
      "                                                                 block_14_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_15_expand (Conv2D)        (None, 7, 7, 960)    153600      block_14_add[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block_15_expand_BN (BatchNormal (None, 7, 7, 960)    3840        block_15_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_15_expand_relu (ReLU)     (None, 7, 7, 960)    0           block_15_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_15_depthwise (DepthwiseCo (None, 7, 7, 960)    8640        block_15_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_15_depthwise_BN (BatchNor (None, 7, 7, 960)    3840        block_15_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_15_depthwise_relu (ReLU)  (None, 7, 7, 960)    0           block_15_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_15_project (Conv2D)       (None, 7, 7, 160)    153600      block_15_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_15_project_BN (BatchNorma (None, 7, 7, 160)    640         block_15_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "block_15_add (Add)              (None, 7, 7, 160)    0           block_14_add[0][0]               \n",
      "                                                                 block_15_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "block_16_expand (Conv2D)        (None, 7, 7, 960)    153600      block_15_add[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "block_16_expand_BN (BatchNormal (None, 7, 7, 960)    3840        block_16_expand[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "block_16_expand_relu (ReLU)     (None, 7, 7, 960)    0           block_16_expand_BN[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_16_depthwise (DepthwiseCo (None, 7, 7, 960)    8640        block_16_expand_relu[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "block_16_depthwise_BN (BatchNor (None, 7, 7, 960)    3840        block_16_depthwise[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "block_16_depthwise_relu (ReLU)  (None, 7, 7, 960)    0           block_16_depthwise_BN[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "block_16_project (Conv2D)       (None, 7, 7, 320)    307200      block_16_depthwise_relu[0][0]    \n",
      "__________________________________________________________________________________________________\n",
      "block_16_project_BN (BatchNorma (None, 7, 7, 320)    1280        block_16_project[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "Conv_1 (Conv2D)                 (None, 7, 7, 1280)   409600      block_16_project_BN[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "Conv_1_bn (BatchNormalization)  (None, 7, 7, 1280)   5120        Conv_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "out_relu (ReLU)                 (None, 7, 7, 1280)   0           Conv_1_bn[0][0]                  \n",
      "==================================================================================================\n",
      "Total params: 2,257,984\n",
      "Trainable params: 2,223,872\n",
      "Non-trainable params: 34,112\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "base_model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "r9PXBavmXI7L"
   },
   "outputs": [],
   "source": [
    "tf.config.experimental_run_functions_eagerly(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "IXaSyJUSVtQh"
   },
   "outputs": [],
   "source": [
    "from skimage.transform import resize\n",
    "from skimage.color import gray2rgb\n",
    "import numpy as np\n",
    "from tensorflow import keras\n",
    "\n",
    "\n",
    "class ImageGenerator(keras.utils.Sequence):\n",
    "    # after https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly\n",
    "    def __init__(self, train_x, train_y, shuffle=True, batch_size=10):\n",
    "        self.train_x = train_x\n",
    "        self.train_y = train_y\n",
    "        self.shuffle = shuffle\n",
    "        self.batch_size = batch_size\n",
    "        self.on_epoch_end()\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.train_x) // self.batch_size\n",
    "\n",
    "    def __getitem__(self, index):\n",
    "        batch_ids = self.indexes[index*self.batch_size:(index+1)*self.batch_size]\n",
    "        X, y = self.__data_generation(batch_ids)\n",
    "        return X, y\n",
    "\n",
    "    def on_epoch_end(self):\n",
    "        self.indexes = np.arange(len(self.train_x))\n",
    "        if self.shuffle == True:\n",
    "            np.random.shuffle(self.indexes)\n",
    "\n",
    "    def __data_generation(self, batch_ids):\n",
    "        X = []\n",
    "        y = []\n",
    "        for id in batch_ids:\n",
    "            X.append(imagenet_transform(self.train_x[id, ...]))\n",
    "            y.append(self.train_y[id, ...])\n",
    "\n",
    "        return np.array(X), np.array(y)\n",
    "\n",
    "def imagenet_transform(train_image):\n",
    "    image_resized = resize(\n",
    "        train_image, (224, 224),\n",
    "        anti_aliasing=True\n",
    "    )\n",
    "    return gray2rgb(image_resized)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "2kFyBKF7WByZ",
    "outputId": "bff765e1-acf2-41cb-85a7-88b159be3d65"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(28, 28)"
      ]
     },
     "execution_count": 37,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images[0, ...].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "jwqOZeicSm4v",
    "outputId": "7bdf034e-026d-41de-ce64-7d37820ec47a"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]],\n",
       "\n",
       "\n",
       "       [[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]],\n",
       "\n",
       "\n",
       "       [[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]],\n",
       "\n",
       "\n",
       "       ...,\n",
       "\n",
       "\n",
       "       [[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]],\n",
       "\n",
       "\n",
       "       [[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]],\n",
       "\n",
       "\n",
       "       [[[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]],\n",
       "\n",
       "        [[0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         ...,\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.],\n",
       "         [0., 0., 0.]]]])"
      ]
     },
     "execution_count": 12,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imagenet_transform(train_images[0:1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "y14f_pN1VtQj"
   },
   "outputs": [],
   "source": [
    "def create_transfer_model():\n",
    "    base_model = tf.keras.applications.MobileNetV2(\n",
    "        input_shape=(224, 224, 3),\n",
    "        include_top=False,\n",
    "        weights='imagenet'\n",
    "    )\n",
    "    base_model.trainable = False\n",
    "    model = tf.keras.Sequential([\n",
    "      base_model,\n",
    "      tf.keras.layers.GlobalAveragePooling2D(),\n",
    "      tf.keras.layers.Dense(len(class_names))\n",
    "    ])\n",
    "    compile_model(model)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 255
    },
    "colab_type": "code",
    "id": "Es0uIhrtUIAF",
    "outputId": "4c3cf019-7784-4adb-e25a-3c5fbc8d78e1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "mobilenetv2_1.00_224 (Model) (None, 7, 7, 1280)        2257984   \n",
      "_________________________________________________________________\n",
      "global_average_pooling2d_1 ( (None, 1280)              0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 10)                12810     \n",
      "=================================================================\n",
      "Total params: 2,270,794\n",
      "Trainable params: 12,810\n",
      "Non-trainable params: 2,257,984\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = create_transfer_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "colab_type": "code",
    "id": "LGHWc3pOP9YB",
    "outputId": "e81c52fa-4d5e-4f83-d0ea-13b2a2e339d5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "6000/6000 [==============================] - 494s 82ms/step - loss: 0.3766 - accuracy: 0.8650 - val_loss: 0.3202 - val_accuracy: 0.8860\n",
      "Epoch 2/50\n",
      "6000/6000 [==============================] - 501s 83ms/step - loss: 0.2960 - accuracy: 0.8937 - val_loss: 0.3352 - val_accuracy: 0.8806\n",
      "Epoch 3/50\n",
      "6000/6000 [==============================] - 478s 80ms/step - loss: 0.2733 - accuracy: 0.9002 - val_loss: 0.2933 - val_accuracy: 0.8967\n",
      "Epoch 4/50\n",
      "6000/6000 [==============================] - 482s 80ms/step - loss: 0.2618 - accuracy: 0.9065 - val_loss: 0.3678 - val_accuracy: 0.8753\n",
      "Epoch 5/50\n",
      "6000/6000 [==============================] - 476s 79ms/step - loss: 0.2504 - accuracy: 0.9104 - val_loss: 0.3114 - val_accuracy: 0.8916\n",
      "Epoch 6/50\n",
      "6000/6000 [==============================] - 483s 80ms/step - loss: 0.2432 - accuracy: 0.9125 - val_loss: 0.3507 - val_accuracy: 0.8872\n",
      "Epoch 7/50\n",
      "6000/6000 [==============================] - 472s 79ms/step - loss: 0.2388 - accuracy: 0.9135 - val_loss: 0.3507 - val_accuracy: 0.8855\n",
      "Epoch 8/50\n",
      "6000/6000 [==============================] - 479s 80ms/step - loss: 0.2330 - accuracy: 0.9160 - val_loss: 0.3146 - val_accuracy: 0.8983\n",
      "Epoch 9/50\n",
      "6000/6000 [==============================] - 498s 83ms/step - loss: 0.2302 - accuracy: 0.9170 - val_loss: 0.3162 - val_accuracy: 0.8945\n",
      "Epoch 10/50\n",
      "6000/6000 [==============================] - 501s 84ms/step - loss: 0.2269 - accuracy: 0.9198 - val_loss: 0.3440 - val_accuracy: 0.8882\n",
      "Epoch 11/50\n",
      "6000/6000 [==============================] - 486s 81ms/step - loss: 0.2231 - accuracy: 0.9195 - val_loss: 0.3309 - val_accuracy: 0.8944\n",
      "Epoch 12/50\n",
      "6000/6000 [==============================] - 461s 77ms/step - loss: 0.2212 - accuracy: 0.9208 - val_loss: 0.3593 - val_accuracy: 0.8838\n",
      "Epoch 13/50\n",
      "6000/6000 [==============================] - 503s 84ms/step - loss: 0.2164 - accuracy: 0.9223 - val_loss: 0.3524 - val_accuracy: 0.8880\n",
      "Epoch 14/50\n",
      "6000/6000 [==============================] - 510s 85ms/step - loss: 0.2180 - accuracy: 0.9222 - val_loss: 0.3438 - val_accuracy: 0.8895\n",
      "Epoch 15/50\n",
      "6000/6000 [==============================] - 479s 80ms/step - loss: 0.2133 - accuracy: 0.9235 - val_loss: 0.3617 - val_accuracy: 0.8838\n",
      "Epoch 16/50\n",
      "6000/6000 [==============================] - 498s 83ms/step - loss: 0.2141 - accuracy: 0.9218 - val_loss: 0.3497 - val_accuracy: 0.8912\n",
      "Epoch 17/50\n",
      "6000/6000 [==============================] - 473s 79ms/step - loss: 0.2134 - accuracy: 0.9222 - val_loss: 0.3543 - val_accuracy: 0.8922\n",
      "Epoch 18/50\n",
      "6000/6000 [==============================] - 479s 80ms/step - loss: 0.2095 - accuracy: 0.9248 - val_loss: 0.4049 - val_accuracy: 0.8825\n",
      "Epoch 19/50\n",
      "6000/6000 [==============================] - 492s 82ms/step - loss: 0.2087 - accuracy: 0.9253 - val_loss: 0.3589 - val_accuracy: 0.8878\n",
      "Epoch 20/50\n",
      "6000/6000 [==============================] - 496s 83ms/step - loss: 0.2063 - accuracy: 0.9253 - val_loss: 0.3689 - val_accuracy: 0.8910\n",
      "Epoch 21/50\n",
      "6000/6000 [==============================] - 490s 82ms/step - loss: 0.2065 - accuracy: 0.9248 - val_loss: 0.3944 - val_accuracy: 0.8886\n",
      "Epoch 22/50\n",
      "6000/6000 [==============================] - 501s 84ms/step - loss: 0.2070 - accuracy: 0.9260 - val_loss: 0.3742 - val_accuracy: 0.8939\n",
      "Epoch 23/50\n",
      "6000/6000 [==============================] - 515s 86ms/step - loss: 0.2040 - accuracy: 0.9262 - val_loss: 0.4503 - val_accuracy: 0.8786\n",
      "Epoch 24/50\n",
      "6000/6000 [==============================] - 495s 83ms/step - loss: 0.2035 - accuracy: 0.9265 - val_loss: 0.3658 - val_accuracy: 0.8932\n",
      "Epoch 25/50\n",
      "2610/6000 [============>.................] - ETA: 4:06 - loss: 0.1932 - accuracy: 0.9295"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "ignored",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-15-5a20f04704a4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m     \u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mImageGenerator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_images\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_labels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      6\u001b[0m )\n\u001b[1;32m      7\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maccuracy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_images\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_labels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36m_method_wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m     64\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_method_wrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     65\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_in_multi_worker_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m  \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 66\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     67\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     68\u001b[0m     \u001b[0;31m# Running inside `run_distribute_coordinator` already.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m    846\u001b[0m                 batch_size=batch_size):\n\u001b[1;32m    847\u001b[0m               \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_train_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 848\u001b[0;31m               \u001b[0mtmp_logs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    849\u001b[0m               \u001b[0;31m# Catch OutOfRangeError for Datasets of unknown size.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    850\u001b[0m               \u001b[0;31m# This blocks until the batch has finished executing.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m    578\u001b[0m         \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    579\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 580\u001b[0;31m       \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    581\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    582\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m    609\u001b[0m       \u001b[0;31m# In this case we have created variables on the first call, so we run the\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    610\u001b[0m       \u001b[0;31m# defunned version which is guaranteed to never create variables.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 611\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateless_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# pylint: disable=not-callable\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    612\u001b[0m     \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    613\u001b[0m       \u001b[0;31m# Release the lock early so that multiple threads can perform the call\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   2418\u001b[0m     \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2419\u001b[0m       \u001b[0mgraph_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2420\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_filtered_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m  \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2421\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2422\u001b[0m   \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_filtered_call\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m   1663\u001b[0m          if isinstance(t, (ops.Tensor,\n\u001b[1;32m   1664\u001b[0m                            resource_variable_ops.BaseResourceVariable))),\n\u001b[0;32m-> 1665\u001b[0;31m         self.captured_inputs)\n\u001b[0m\u001b[1;32m   1666\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1667\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_call_flat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcaptured_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcancellation_manager\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[0;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[1;32m   1744\u001b[0m       \u001b[0;31m# No tape is watching; skip to running the function.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1745\u001b[0m       return self._build_call_outputs(self._inference_function.call(\n\u001b[0;32m-> 1746\u001b[0;31m           ctx, args, cancellation_manager=cancellation_manager))\n\u001b[0m\u001b[1;32m   1747\u001b[0m     forward_backward = self._select_forward_and_backward_functions(\n\u001b[1;32m   1748\u001b[0m         \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[1;32m    596\u001b[0m               \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    597\u001b[0m               \u001b[0mattrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 598\u001b[0;31m               ctx=ctx)\n\u001b[0m\u001b[1;32m    599\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    600\u001b[0m           outputs = execute.execute_with_cancellation(\n",
      "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py\u001b[0m in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m     58\u001b[0m     \u001b[0mctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mensure_initialized\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     59\u001b[0m     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,\n\u001b[0;32m---> 60\u001b[0;31m                                         inputs, attrs, num_outputs)\n\u001b[0m\u001b[1;32m     61\u001b[0m   \u001b[0;32mexcept\u001b[0m \u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     62\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "model.fit(  # if you use tensorflow < 2.20, you should use fit_generator instead\n",
    "    x=ImageGenerator(train_images, train_labels),\n",
    "    epochs=50,\n",
    "    verbose=1,\n",
    "    validation_data=ImageGenerator(test_images, test_labels)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "3P-5db3OVtQo"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "Pick Clothing Items.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.11"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "0b34fd8ee8fa4176b75527837d16ec89": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "18e49b801c83428aa47e9d2bde68cf53": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_71a6e098b888434db51fd6fadd002b59",
      "placeholder": "​",
      "style": "IPY_MODEL_ffd7280d74a44872a7106e1a1fd7528e",
      "value": " 60000/? [04:46&lt;00:00, 209.10it/s]"
     }
    },
    "25a49350a2e3449caacb56341ed6c2f7": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "360c4d52ff4b41ceb64e789f38ea6686": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3aa10c7f06e34ddb87418b0628d5c0b1": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_aa1a3dcdf26042cf846b3aa213f4b58a",
       "IPY_MODEL_4a5361b5fb994ba8803c2af570cbb447"
      ],
      "layout": "IPY_MODEL_cbac105d2d524286a8506f872e350cfc"
     }
    },
    "43adae0db038440db89db86137a8b891": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": "initial"
     }
    },
    "4a5361b5fb994ba8803c2af570cbb447": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b90aaa61133347d68792c2d6a2499f41",
      "placeholder": "​",
      "style": "IPY_MODEL_0b34fd8ee8fa4176b75527837d16ec89",
      "value": " 10000/? [00:48&lt;00:00, 206.08it/s]"
     }
    },
    "71a6e098b888434db51fd6fadd002b59": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8d47b3d6094e47b18ed5ff17758ca758": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "969fb2fa34024793ae43f603d23a9df8": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": "initial"
     }
    },
    "a50f56bf3dfa4803817f7f9a8b3f43a1": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8d47b3d6094e47b18ed5ff17758ca758",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_43adae0db038440db89db86137a8b891",
      "value": 1
     }
    },
    "aa1a3dcdf26042cf846b3aa213f4b58a": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_360c4d52ff4b41ceb64e789f38ea6686",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_969fb2fa34024793ae43f603d23a9df8",
      "value": 1
     }
    },
    "b90aaa61133347d68792c2d6a2499f41": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cbac105d2d524286a8506f872e350cfc": {
     "model_module": "@jupyter-widgets/base",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f5c69913c9c94e2cb813c4a73a775e6c": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a50f56bf3dfa4803817f7f9a8b3f43a1",
       "IPY_MODEL_18e49b801c83428aa47e9d2bde68cf53"
      ],
      "layout": "IPY_MODEL_25a49350a2e3449caacb56341ed6c2f7"
     }
    },
    "ffd7280d74a44872a7106e1a1fd7528e": {
     "model_module": "@jupyter-widgets/controls",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
